package com.newstore.database;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.newstore.classes.Delivery;

/**
 * Permet de faire le lien entre les objets Delivery et la base de données
 * @author Guillaume
 * @version 1.0
 */
public class DeliveryDatabase
{
	private SQLiteDatabase databaseQueries;
	
	/**
	 * Constructeur
	 * @param databaseQueries Base de données où les requêtes vont s'effectuer
	 */
	public DeliveryDatabase(SQLiteDatabase databaseQueries)
	{
		this.databaseQueries = databaseQueries;
	}
	
	/**
	 * Effectue une requête pour retourner un Delivery à partir d'un id
	 * @param deliveryId Id du barcode souhaité
	 * @return Le delivery souhaité
	 */
	public Delivery getDeliveryFromId(int deliveryId)
	{
		Cursor cursor = databaseQueries.query(DatabaseNewstore.TABLE_DELIVERY, new String[] {"id", DatabaseNewstore.COL_NAME_DELIVERY, DatabaseNewstore.COL_REFERENCE_DELIVERY, DatabaseNewstore.COL_ADDRESS},
				"id = " + deliveryId, null, null, null, null);
		return deliveryCursor(cursor);
	}
	
	/**
	 * Insère un delivery dans la base de données
	 * @param delivery delivery que l'on souhaite insérer dans la base de données
	 * @return L'id du delivery inséré
	 */
	public long insertDelivery(Delivery delivery)
	{
		ContentValues values = new ContentValues();
		values.put(DatabaseNewstore.COL_NAME_DELIVERY, delivery.getName());
		values.put(DatabaseNewstore.COL_REFERENCE_DELIVERY, delivery.getReference());
		values.put(DatabaseNewstore.COL_ADDRESS, delivery.getAddress());
		
		return this.databaseQueries.insert(DatabaseNewstore.TABLE_DELIVERY, null, values);
	}
	
	/**
	 * Cursor qui permet d'avoir un delivery grâce à une requête
	 * @param cursor Cursor qui permet de parcourir la requête
	 * @return Le delivery rempli
	 */
	private Delivery deliveryCursor(Cursor cursor)
	{
		if (cursor.getCount() == 0)
			return null;
		
		cursor.moveToFirst();
		Delivery product = new Delivery(cursor.getInt(0), cursor.getString(1), cursor.getString(2), cursor.getString(3));
		cursor.close();
		
		return product;
	}
}
